<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Promise的拓展方法    => Promise实例使用
    // 用法 p.then()  p.catch()    p.finally()

    // debugger;
    // 异步操作 => 两秒后 改变Promise实例的状态 
    var p = new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve(1);
            // reject(1);
        }, 1000);
    })
    console.log("p", p);

    // then catch的链式操作  => 成功就走then  失败走catch (一失足成千古恨)

    // 规律1:  
    // then() 方法的链式操作 => Promise实例可以依次按顺序调用多个then(), 第一个回调函数完成以后，会将返回结果作为参数(前提:回调函数的返回值是一个非Promise对象)，传入第二个回调函数。

    p.then(function (v) {
        console.log("已成功", v); // 1
        return 2;  // 回调函数的返回值是一个非Promise对象 => 直接就向后传递
    }).then(function (v) {   // 2
        console.log("已成功", v); // 2
        // aaaaa;
        return 3;
    }).then(function (v) {
        console.log("已成功", v); // 3
    }).catch(function (err) {
        console.log("已失败", err);
    })









</script>

</html>